package com.chang.xmltx.service;

import com.chang.xmltx.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;


// @Transactional(timeout = 3,readOnly = true) // 只读事务中不能带有增删改操作
// @Transactional(noRollbackFor = ArithmeticException.class) // 发生特定特定异常后不进行回滚,但是不回滚不代表事务正常完整执行,途中异常会导致异常之后的操作无法执行,而之前的操作依旧保留执行效果
// @Transactional(propagation = Propagation.REQUIRED) // 如果当前线程上有已经开启的事务可用，那么就在这个事务中运行，也就是事务A调用标记了该传播级别的事务B时，就按照事务A来执行，期间报错全部回滚


@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    @Override
    public void buyBook(Integer bookId, Integer userId) {

        // 根据图书id查询图书价格
        Integer price = bookDao.getBookPriceById(bookId);

        // System.out.println(1/0);
        // 更新用户余额
        bookDao.updateUserBalance(userId, bookId);

    }
}
